﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using RRTWSEntityDSD.Dominio;
using RRTWSNegocioDSD.Dao;
using RRTWSEntityDSD.Dao;



namespace RRTWSEntityDSD.ServiceEntidad.WFCServiceREST
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "WCFAsientosService" in code, svc and config file together.
    public class WCFAsientosService : IWCFAsientosService
    {
        private static AsientoDAO asientoDAO = new AsientoDAO();

        public Asiento CrearAsiento(Asiento estadoACrear)
        {
            return asientoDAO.Crear(estadoACrear);
            
        }

        public Asiento ObtenerAsiento(string codigo)
        {
            return asientoDAO.Obtener(int.Parse(codigo));
        }

        public Asiento ModificarAsiento(Asiento estadoAModificar)
        {
            return asientoDAO.Modificar(estadoAModificar);
        }

        public void EliminarAsiento(string codigo)
        {
            throw new NotImplementedException();
        }

        public List<Asiento> ListarAsientos()
        {
            return asientoDAO.getListarAsientos();
        }

        public Asiento getAsientoDisponiblePorEvento(string codigo, string evento)
        {
            int _id = int.Parse(codigo);
            int _evento = int.Parse(evento);
            return asientoDAO.getAsientoDisponiblePorEvento(_id, _evento);
        }

        public List<Asiento> getListaAsientoDisponiblePorEvento(string evento)
        {

            int _evento = int.Parse(evento);
            List<Asiento> a = asientoDAO.getListaAsientoDisponiblePorEvento(_evento);
            if (a == null)
            {
                throw new NullReferenceException("No esta disponible : " + evento);
            }
            return a;

        }

        public List<Asiento> listarAsientosPorEstadio(string codigo)
        {
            int id = int.Parse(codigo);
            if ((id == 0))
            {
                throw new NullReferenceException("valor vacio");
            }
            return asientoDAO.getListaAsientosPorEstadio(id);
        }

        public List<Asiento> listarAsientosPorEvento(string codigo)
        {
            int evento = int.Parse(codigo);
            return asientoDAO.getListarAsientosPorEvento(evento);
        }


        public List<Asiento> listarAsientosPorClientePorEvento(string cliente, string evento, string pago)
        {
            return asientoDAO.listarAsientosPorClientePorEvento(cliente, evento, pago);
        }
    }
}
